package com.liaoyifan.core.properties;

import com.liaoyifan.core.constant.Properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

@Data
@ConfigurationProperties(prefix = Properties.LIAOYIFAN + Properties.REDIS)
public class RedisProperties {

    /** Redis服务器地址，多个地址用逗号分隔(集群模式) */
    private String address;

    /** Redis密码 */
    private String password;

    /** 数据库索引(单机模式) */
    private Integer database = 0;

    /** Redisson线程池大小 */
    private Integer threads;

    /** Redisson Netty线程池大小 */
    private Integer nettyThreads;

    /** 最小空闲连接数 */
    private Integer connectionMinimumIdleSize = 10;

    /** 连接池大小 */
    private Integer connectionPoolSize = 64;

    /** 空闲连接超时时间(毫秒) */
    private Integer idleConnectionTimeout = 10000;

    /** 连接超时时间(毫秒) */
    private Integer connectTimeout = 10000;

    /** 命令等待超时时间(毫秒) */
    private Integer timeout = 3000;

    /** 重试次数 */
    private Integer retryAttempts = 3;

    /** 主节点连接池大小(集群模式) */
    private Integer masterConnectionPoolSize = 64;

    /** 从节点连接池大小(集群模式) */
    private Integer slaveConnectionPoolSize = 64;

    /** 集群状态扫描间隔时间(毫秒)(集群模式) */
    private Integer scanInterval = 2000;

    /** 失败节点重连间隔时间(毫秒)(集群模式) */
    private Integer failedSlaveReconnectionInterval = 3000;
}
